Git 常用的命令汇总
创建新仓库
检出仓库
有冲突的话合并这些 冲突(conflicts)。改完之后,你需要执行如下命令以将它们标记为合并成功:
在合并改动之前,也可以使用如下命令查看:
1
| git diff <source_branch> <target_branch>
|
串创建一个本地仓库的克隆版本
1
| git clone /path/to/repositoty
|
如果是远程服务器上的仓库
1
| git clone username@host:/path/to/repository
|
假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
1 2
| git fetch origin git reset –hard origin/master
|
你的本地仓库由 git
维护的三棵“树”组成。第一个是你的 工作目录
,它持有实际件;第二个是 缓存区(Index)
,它像个缓存区域,临时保存你的改动;最后是 HEAD
,指向你最近一次提交后的结果。
添加与提交
你可以计划改动(把它们添加到缓存区),使用如下命令:
1 2
| git add <filename> git add *
|
这是 git 基本工作流程的第一步;使用如下命令以实际提交改动:
现在,你的改动已经提交到了 HEAD
,但是还没到你的远端仓库。推送改动
你的改动现在已经在本地仓库的 HEAD
中了。执行如下命令以将这些改动提交到远端仓库:
可以把 master 换成你想要推送的任何分支。如果你还没有克隆现有仓库,并欲将你的仓库连接到某个远程服务器,你可以使用如下命令添加:
1
| git remote add origin <server>
|
如此你就能够将你的改动推送到所添加的服务器上去
分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master
是“默认的”。在其他分支上进行开发,完成后再将它们合并到主分支上
创建一个叫做“feature_x”的分支,并切换过去:
1
| git checkout -b feature_x
|
切换回主分支:
再把新建的分支删掉:
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
1
| git push origin <branch>
|
更新与合并
要更新你的本地仓库至最新改动,执行:
以在你的工作目录中 获取(fetch) 并合并(merge) 远端的改动。
要合并其他分支到你的当前分支(例如 master),执行:
两种情况下,git 都会尝试去自动合并改动。不幸的是,自动合并并非次次都能成功,并可能导致 冲突(conflicts)。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts)了。改完之后,你需要执行如下命令以将它们标记为合并成功:
在合并改动之前,也可以使用如下命令查看:
1
| git diff <source_branch> <target_branch>
|
替换本地改动
假如你做错事(自然,这是不可能的),你可以使用如下命令替换掉本地改动:
1
| git checkout — <filename>
|
此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。假如你想要丢弃你所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它:
1 2
| git fetch origin git reset –hard origin/master
|
从命令行创建一个新的仓库
1 2 3 4 5 6
| touch README.md git init git add README.md git commit -m "first commit" git remote add origin http://dadanliao.com/quantitative/test.git git push -u origin master
|
从命令行推送已经创建的仓库
1 2
| git remote add origin http://dadanliao.com/quantitative/test.git git push -u origin master
|
辅助功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| git version
git help
git help <command>
git config user.name "Your Name Comes Here"
git config --global user.name "Your Name Comes Here"
git config user.email [email protected]
git config --global user.email [email protected]
git config --list
git config --global --list
git config core.fileMode false
git init
git status
git status -uno
git help <command>
|
查看、添加、提交、删除、找回,重置修改文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| git show
git co -- <file>
git co .
git add <file>
git add .
git add <fileName1> <fileName2>
git add <folderPath>
git add .
git add --all
git rm <file>
git rm <file> --cached
git clean -f
git clean -fd
git clean -xfd
git clean -nxfd
git clean -nf
git clean -nfd
git reset <file>
git reset -- .
git reset --hard
git ci <file>
git ci .
git ci -a
git ci -am "some comments"
git ci --amend
git revert <$id>
git revert HEAD
|
查看文件diff
1 2 3 4 5 6 7 8 9 10 11
| git diff <file>
git diff <id1><id1><id2>
git diff <branch1>..<branch2>
git diff --staged
git diff --cached
git diff --stat
|
查看提交记录
1 2 3 4 5 6 7
| git log git log <file>
git log -p <file>
git log -p -2
git log --stat
|
tig
Mac上可以使用tig
代替diff
和log
,brew install tig
Git 本地分支管理
查看、切换、创建和删除分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| git br -r
git br <new_branch>
git br -v
git br --merged
git br --no-merged
git co <branch>
git co -b <new_branch>
git co -b <new_branch> <branch>
git co $id
git co $id -b <new_branch>
git checkout <localBranchName>
git checkout <remoteBranchName>
git checkout -b <branchName>
git checkout <fileName>
git br -d <branch>
git br -D <branch> 分支合并和rebase
git merge <branch>
git merge origin/master --no-ff
git rebase master <branch>
|
Git补丁管理(方便在多台机器上开发同步时用)
1 2 3 4 5
| git diff > ../sync.patch
git apply ../sync.patch
git apply --check ../sync.patch
|
Git暂存管理
1 2 3 4 5 6 7
| git stash
git stash list
git stash apply
git stash drop
|
Git远程分支管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| git pull
git pull --no-ff
git fetch origin
git merge origin/master
git co --track origin/branch
git co -b <local_branch> origin/<remote_branch>
git push
git push origin master
git push -u origin master
git push origin <local_branch>
git push origin <local_branch>:<remote_branch>
git push origin :<remote_branch>
|
Git远程仓库管理
1 2 3 4 5 6 7
| git remote -v
git remote show origin
git remote add origin git@ github:robbin/robbin_site.git
git remote set-url origin git@ github.com:robbin/robbin_site.git
|
创建远程仓库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| git clone --bare robbin_site robbin_site.git
scp -r my_project.git git@ git.csdn.net:~
mkdir robbin_site.git && cd robbin_site.git && git --bare init
git remote add origin git@ github.com:robbin/robbin_site.git
git push -u origin master
git push -u origin develop
git remote set-head origin master
git branch --set-upstream master origin/master
git branch --set-upstream develop origin/develop
git branch
git branch -r
git branch <branchName>
git branch -d <branchName>
git branch -m <oldBranchName> <newBranchName>
git branch -m <newBranchName>
|