史上最全的Git命令基本操作,完全可以应付工作!

1、复制远程仓库到本地:git clone

[dev@hua1-dev git_workspace]$ git clone http://git.haoys.net/hua/mouse.git
正克隆到 'mouse'...
Username for 'http://git.haoys.net': 
Password for 'http://[email protected]': 
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
展开对象中: 100% (3/3), 完成.
检查连接... 完成。

 首次克隆,可能要输入用户名和密码,下次就不用输入了。这样在本地就出现了项目的mouse文件夹,进入文件夹进行操作。

2、查看当前的工作分支信息

[dev@hua1-dev mouse]$ git branch  //查看本地分支信息
* master
[dev@hua1-dev mouse]$ git branch -r  //查看远程分支信息
origin/HEAD -> origin/master
origin/master
[dev@hua1-dev mouse]$ git branch --all  //查看所有分支信息
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

当前工作分支在本地master上,远程分支是origin/master。

3、查看提交日志: git log

[dev@hua1-dev mouse]$ git log 
commit f3472d6646335d9bd168ba22252033a7557295c5
Author: dev 
Date:   Fri Oct 18 15:27:48 2019 +0800

    commit changes

commit c9023e59cc2c89f8301956c3652511cb42af204e
Author: 瀛<99>?96><87>?8D> 
Date:   Fri Oct 18 14:24:35 2019 +0800

    Add new file

4、分支的创建 :git branch

我们从master创建一个开发分支local-dev, 在开发分支上进行开发。

[dev@hua1-dev mouse]$ git branch local-dev
[dev@hua1-dev mouse]$ git status
位于分支 master
您的分支与上游分支 'origin/master' 一致。
nothing to commit, working tree clean
[dev@hua1-dev mouse]$ git branch 
  local-dev
* master

可以看到本地分支中多了一个分支local-dev,但现在指针依然位于master本地分支上。

5、切换分支 :git checkout

[dev@hua1-dev mouse]$ git checkout local-dev
切换到分支 'local-dev'
[dev@hua1-dev mouse]$ git status
位于分支 local-dev
nothing to commit, working tree clean
[dev@hua1-dev mouse]$ git branch
* local-dev
  master

可以看到现在位于本地分支local-dev上了。

注意:其实4和5可以用一个命令解决:git checkout -b,此命令可以创建并切换分支

6、提交代码到本地仓库中:git add和git commit

[dev@hua1-dev mouse]$ git status
位于分支 local-dev
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     git-wiki.php

未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)

	a.php

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[dev@hua1-dev mouse]$ git add git-wiki.php a.php
[dev@hua1-dev mouse]$ git status
位于分支 local-dev
要提交的变更:
  (使用 "git reset HEAD <文件>..." 以取消暂存)

	新文件:   a.php
	修改:     git-wiki.php

[dev@hua1-dev mouse]$ git commit -m"commit changes" 
[local-dev f3472d6] commit changes
 Committer: dev 
您的姓名和邮件地址基于登录名和主机名进行了自动设置。请检查它们正确
与否。您可以对其进行设置以免再出现本提示信息:

    git config --global user.name "Your Name"
    git config --global user.email [email protected]

设置完毕后,您可以用下面的命令来修正本次提交所使用的用户身份:

    git commit --amend --reset-author

 2 files changed, 10 insertions(+), 8 deletions(-)
 create mode 100644 a.php
[dev@hua1-dev mouse]$ git status
位于分支 local-dev
nothing to commit, working tree clean

注:如果想两步合并成一步也是可以的:git commit -a

修改文件用git status后发现让用git add 加入到提交区,然后git commit提交到本地仓库,记住commit是提交到本地仓库,远程仓库是没有的,如果想提交到远程仓库,则还需要git push。

7、推送到远程仓库:git push

新建分支第一次push,然后输入git push --set-upstream origin remote-dev这行命令,再然后输入用户名和密码,就push成功了。以后的push就只需要输入  git push origin

[dev@hua1-dev mouse]$ git push
fatal: 当前分支 local-dev 没有对应的上游分支。
为推送当前分支并建立与远程上游的跟踪,使用

    git push --set-upstream origin local-dev

[dev@hua1-dev mouse]$ git push --set-upstream origin local-dev
Username for 'http://git.haoys.net': sunwenhua
Password for 'http://[email protected]': 
对象计数中: 4, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (4/4), 335 bytes | 0 bytes/s, 完成.
Total 4 (delta 1), reused 0 (delta 0)
remote: 
remote: To create a merge request for local-dev, visit:
remote:   http://git.haoys.net/hua/mouse/merge_requests/new?merge_request%5Bsource_branch%5D=local-dev
remote: 
To http://git.haoys.net/hua/mouse.git
 * [new branch]      local-dev -> local-dev
分支 local-dev 设置为跟踪来自 origin 的远程分支 local-dev。

 当关联分支和当前分支不一样时,使用命令:git push origin HEAD:remote-dev

[dev@hua1-dev mouse]$ git push
fatal: 如果您当前分支的上游分支和您当前分支名不匹配,为推送到远程的
上游分支,使用

    git push origin HEAD:local-dev

为推送至远程同名分支,使用

    git push origin dev

为了永久地选择任一选项,参见 'git help config' 中的 push.default。

8、更新代码到本地仓库:git pull

[dev@hua1-dev mouse]$ git pull
Username for 'http://git.haoys.net': hua
Password for 'http://[email protected]': 
Already up-to-date.

 

9、本地分支关联到远程分支: git branch --set-upstream-to=origin/remote-dev local-dev

如果本地有一个分支dev我们想和远程仓库的分支local-dev进行关联,可以采用以下方式

[dev@hua1-dev mouse]$ git pull
Username for 'http://git.haoys.net': hua
Password for 'http://[email protected]': 
当前分支没有跟踪信息。
请指定您要合并哪一个分支。
详见 git-pull(1)。

    git pull <远程> <分支>

如果您想要为此分支创建跟踪信息,您可以执行:

    git branch --set-upstream-to=origin/<分支> dev

[dev@hua1-dev mouse]$ git branch --set-upstream-to=origin/local-dev dev
分支 dev 设置为跟踪来自 origin 的远程分支 local-dev。
[dev@hua1-dev mouse]$ git status
位于分支 dev
您的分支与上游分支 'origin/local-dev' 一致。
nothing to commit, working tree clean

10、恢复代码到指定版本:git reset

如果误把不想提交的代码commit到本地了,reset命令可以恢复到提交之前

1、先在log中找到想要恢复到的commitId

2、//将代码恢复到提交前,保留了本次提交的修改内容

    git reset commitId

3、如果不想保留本次修改,直接用

git reset -hard commitId

11、git 删除本地所有未提交的更改

 git rm --cached :已 add(tracked)未 commit 的文件,使其回到未 add 状态(untracked)。
 
 git rm -f : 从本地删除已 add 的文件。
 
 git checkout --  :有修改的文件回到 tracked 状态,对已 tracked 的文件撤销修改。
 
 git reset HEAD :让文件从暂存区到工作区。
 
 git reset --soft HEAD^:撤销 commit,回到 tracked 暂存区状态。

 git reflog -- : 查看返回的版本
 git reset --soft HEAD@{1} -- :回退一步 
 
 //删除untracked文件 git clean
 git clean -n:演习
 git clean -f:删除当前目录下 untracked 文件,除过 .gitignore 里的文件或文件夹
 git clean -f :指定路径下
 git clean -df:删除当前目录下 untracked 文件和文件夹
 git clean -xf:删除当前目录下所有 untracked 文件,不管 .gitignore

好基友:git reset --hard && git clean -f 使本地完全回退到上次 commit.

12、合并分支

想将dev分支合并到master分支,操作如下:

  • 1、首先切换到master分支上
git  checkout master
  • 2、如果是多人开发的话 需要把远程master上的代码pull下来
git pull origin master
//如果是自己一个开发就没有必要了,为了保险期间还是pull
  • 3、然后我们把dev分支的代码合并到master上
git merge dev
  • 4、然后查看状态及执行提交命令
git status

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上 
> 最后执行下面提交命令
git push origin master

 

13、删除分支

//删除远程分支Chapater6

git push origin --delete Chapater6

//删除本地分支 Chapater6

git branch -d  Chapater6

 

你可能感兴趣的:(git,开发工具)