git使用命令

jopen 8年前
 

git使用命令

1.基本使用

  • git init仓库初始化

  • git add <file>添加文件到仓库

  • git add .将所有修改过的文件

  • git add -u将所有修改或已删除的tracked文件添加到暂存区

  • git add -A将所有文件的修改和删除文件添加的暂存区

  • git rm <file>从版本库中删除文件

  • git rm <file> --cached从版本库中删除,但不删除本地文件

  • git checkout -- <file>取消工作区文件的修改

  • git checkout -- .取消所有工作区文件的修改

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

  • git reset HEAD <file>从暂存区恢复到工作文件

  • git reset从暂存区恢复所有文件到工作区

  • git reset HEAD^工作区不改变,但是暂存区会回退到上一次提交之前,引用也会回退一次。

  • git reset --hard HEAD^彻底撤销最近的提交。引用回退到前一次,而且工作区和暂存区都会回退到上一次提交的状态。自上一次以来的提交全部丢失。

  • git reset (--hard) commit_id回退到某个版本,--hard参数表示是否保留工作区的修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • git commit -m "what are you doing?"文件提交

  • git log --pretty=oneline --graph显示提交日志

--pretty=oneline 日志一行简要显示--graph 图形化显示日志

  • git reflog查看命令日志,可以用来确定要回到未来哪个版本

2.分支操作

  • git branch

  • git checkout -b &lt;name&gt;

  • git checkout &lt;name&gt;

  • git merge &lt;name&gt;

  • git merge --no-ff -m "instructions" <name>合并分支到当前

--no-ff 保留分支信息

  • git branch -d <name>删除分支

  • git branch -D <name>强制删除分支

3.远程仓库操作

  • git remote add origin git@github.com:luna825/learngit.git关联一个远程库

  • git push -u origin master第一次

  • git clone https://github.com/luna825/lunablog.git克隆一个远程仓库

  • git remote -v显示远程仓库

-v会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL

  • git fetch origin获取远程仓库中有,但你没有的信息

  • git push origin master推送到远程仓库

  • git remote show origin查看远程仓库

  • git pull会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支。

  • git remote rename pb paul修改远程仓库的名字

  • git remote rm paul删除远程仓库

4.远程分支

  • git push origin serverfix推送分支

这里有些工作被简化了。 Git 自动将 serverfix 分支名字展开为 refs/heads/serverfix:refs/heads/serverfix,那意味着,“推送本地的 serverfix 分支来更新远程仓库上的 serverfix 分支。你也可以运行 git push origin serverfix:serverfix,它会做同样的事 - 相当于它说,“推送本地的 serverfix 分支,将其作为远程仓库的 serverfix 分支” 可以通过这种格式来推送本地分支到一个命名不相同的远程分支。 如果并不想让远程仓库上的分支叫做 serverfix,可以运行 git push origin serverfix:awesomebranch 来将本地的 serverfix 分支推送到远程仓库上的 awesomebranch 分支。

  • git merge origin/serverfix远程分支合并到当前分支.最好使用本命令来合并分支,因为git pull会合并所有跟踪的分支

  • git checkout -b serverfix origin/serverfix新建本地分支并将远程分支clone下来(建立了track)

git checkout --track origin/serverfix简写

  • git branch -u origin/serverfix设置已有的本地分支跟踪一个刚刚拉取下来的远程分支

  • git branch -vv这会将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有