首页 > 代码库 > Git命令总结

Git命令总结

pwd  用于显示当前目录

git init  把这个目录变成Git可以管理的仓库
ls (-ah)  可以看见(隐藏)目录
git add file 告诉Git,把文件添加到仓库
git commit -m "log" 告诉Git,把文件提交到仓库
git status 可以让我们时刻掌握仓库当前的状态
git diff 可以查看修改内容
git diff HEAD -- file命令可以查看工作区和版本库里面最新版本的区别

git reset --hard commit_id

版本回退

        Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit
一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成
果全部丢失。
        在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
git log --pretty=oneline 可以查看提交历史,以便确定要回退到哪个版本
git log --graph --pretty=oneline --abbrev-commit 查看分支历史
git reflog 查看命令历史,以便确定要回到未来的哪个版本

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念:

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个

分支master,以及指向master的一个指针叫HEAD

技术分享

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

 

 

git checkout -- file 可以丢弃工作区的修改
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原“
git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区
git rm 从版本库中删除该文件

远程库操作:

要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push -u origin master第一次推送master分支的所有内容

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

 

git clone git@server-name:path/repo-name.git 克隆一个本地库
git branch 查看当前分支
git branch name创建分支
git checkout -b name 表示创建并切换分支
git merge 用于合并指定分支到当前分支
git branch -d name 删除分支
git merge --no-ff -m "log" name 

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用
Fast forward
模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

 

git stash 可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash list 查看先前工作现场

git stash pop 恢复的同时把stash内容也删了
git branch -D name 要丢弃一个没有被合并过的分支,可以通过强行删除
git remote -v 查看远程库的信息
git push origin branch-name 推送分支,就是把该分支上的所有本地提交推送到远程库

 

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin branch-name推送自己的修改

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并

  3. 如果合并有冲突,则解决冲突,并在本地提交

  4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功

如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令

git branch --set-upstream branch-name origin/branch-name

Git的标签

  虽然是版本库的快照,但其实它就是指向某个commit的指针

git tag -a name -m "log" commit-id 就可以打一个新标签 

git tag 查看标签

git show tag-name 可以看到标签说明文字
git push origin tag-name 可以推送一个本地标签
git push origin --tags 可以推送全部未推送过的本地标签
git tag -d tag-name 可以删除一个本地标签
git push origin :refs/tags/ tag-name 可以删除一个远程标签
 

Git命令总结