git 常用命令

熟悉篇

总体流程命令

1、从网上下载到本地库:
克隆时自动将创建好的master分支追踪origin/master分支

# 找到下载地址
git clone [url]

# clone分支
git clone -b branchA http://admin@192.168.1.101:7070/r/virtualbox_all_versions.git

2、修改本地代码后,将文件添加到暂存区:
你在修改本地代码文件时,修改只会影响到工作区。当使用add添加新文件后也就意味着git开始追踪新文件。
add方法分析

# 添加指定文件到暂存区
git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
git add [dir]
 
# 添加当前目录的所有文件到暂存区
#提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git add .
#仅监控已经被add的文件(即tracked file),将被修改的文件提交到暂存区。
#提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add -u

#提交所有变化
git add -A   
# 取消上一次add命令
git reset

# 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
 
# 停止追踪指定文件,但该文件会保留在工作区
git rm --cached [file]
 
# 改名文件,并且将这个改名放入暂存区
git mv [file-original] [file-renamed]

3、提交到本地库:

# 提交暂存区到仓库区
git commit -m [message]
 
# 提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
 
# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]

取消commit

# 取消上次commit
git commit -m "Something terribly misguided"              (1) 你commit了一次
git reset HEAD~                                           (2) 发现内容不对,取消
-》修改文件  						                          (3) 修改一些文件
git add 文件                                               (4) 重新add
git commit -c ORIG_HEAD                                   (5) 重新commit

合并commit

#合并前3个commit
git rebase -i HEAD~3

4、提交到远程库或更新本地库:
git push <远程主机名> <本地分支名> :<远程分支名> ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,第一个master是本地分支名,第二个master是远程分支名。

# 如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建
git push origin master

# 如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master
git push origin :refs/for/master 

# 如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支
git push origin

# 上传本地指定分支到远程仓库
git push [remote] [branch]
 
# 强行推送当前分支到远程仓库,即使有冲突
git push [origin] [branch] --force
git push [origin] [branch] -f
# 下载远程仓库的所有变动,并未merge
git fetch [remote]

# 取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch]

其他命令

分支:
分支的理解
分支理解2
git拉取远程分支并创建本地分支

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 切换到指定分支,并更新工作区
git checkout [branch-name] 

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 远程先开好分支然后拉到本地,并且让feature-branch分支追踪origin/feature-branch远程分支。
git checkout -b feature-branch origin/feature-branch
# 本地先开好分支然后推送到远程

git checkout -b feature-branch   
git push origin feature-branch:feature-branch    //推送本地的feature-branch(冒号前面的)分支到远程origin的feature-branch(冒号后面的)分支(没有会自动创建)

git branch -u origin/serverfix
设置当前分支跟踪远程分支origin/serverfix

git branch -vv
查看本地分支和远程分支的跟踪关系

git branch -d [branch-name]
删除分支
比较远程分支:
先更新下本地的远程分支
git fetch origin

然后可以比对
git diff 本地分支 origin/xxxx

状况查询:


# 显示有变更的文件
git status
 
# 显示当前分支的版本历史
git log

# 显示暂存区和工作区的差异
git diff

# 显示两分支的差异
git diff [first-branch] [second-branch]

# 比较特定文件
git diff master:bin/run_relevance.py hqk_bertimg:exps/bertrel/run_relevance.py

submodule
Git中submodule的使用

# 添加子模块,url为子模块的路径,path为子模块存储的目录路径。
git submodule add <url> <path>

第一次使用前,执行git submodule init和git submodule update --recursive   或者 git submodule update --init --recursive
需要更新时,使用命令:git submodule update --recursive
如果需要提交修改的第三方库,需要在第三方库目录下执行git和cr操作。

# 删除子模块 --force,则子模块工作区内即使有本地的修改,也会被移除。
git submodule deinit project-sub-1 . 
git rm project-sub-1

merge request的流程

1、先在本地创建一个本地分支,比如叫xx_branch。
2、改动xx_branch下的代码。
3、进入你的项目根目录下,运行如下命令,将xx_branch推到远程分支。注意这一步只是新建了个远程分支。
		git add .
		git commit -a -m 'xxxxx'
		git push origin xx_branch
4、在gitlab上面操作,进入xx项目下,点击merge request选项,
然后选择你之前推到远端的xx_branch和你要合并到哪个分支,比如你要合并到master上。
5、点击merge request。

合并远程分支到本地
[GIT] master、origin master 与 origin/master 有什么区别?

1.git fetch

git fetch origin master:tmp   //将远程master分支复制到本地tmp分支上
git diff tmp    //比较区别
git merge tmp  //合并tmp分支
git branch -d tmp

2. git pull:
git pull origin master   //相当于git fetch 和 git merge
//切换到master分支
git chekout master

//更新master分支
git pull

//切换到自己的分支aaa
git checkout aaa

//把master分支合并到自己分支
git merger master

为什么要使用git pull --rebase?
git pull origin master与git pull --rebase origin master的区别

// 使用rebase pull
git pull = git fetch + git merge FETCH_HEAD 
git pull --rebase =  git fetch + git rebase FETCH_HEAD

git pull --rebase origin master 

恢复到某一commit

git reflog   /  git log
git reset b2e7806 
git stash
reset --hard:重置stage区和工作目录
reset --soft:保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区
--hard 会清空工作目录和暂存区的改动,而 --soft则会保留工作目录的内容,并把因为保留工作目录内容所带来的新的文件差异放进暂存区。
reset 不加参数(mixed):保留工作目录,并清空暂存区
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值