GIT命令

Git命令

1. 安装完后配置一下环境变量

$ git config --global user.name “your name”
$ git config --global user.email “your email”
$ git config --list

2. 建立版本库

$ git init							
$ git add *
$ git commit -m “info”
$ git status 

3. 链接、退出远程版本库

gitServer: 服务器的用户名
ip: 服务器的ip地址:

$ ssh gitServer@ip

退出远程版本库

$ exit

4. 本地仓库位置建立远程服务器别名

$ git remote add [远程仓库别名] gitServer@ip:[仓库路径]
$ git remote -v
$ git push master
$ git clone gitServer@ip:[仓库目录文件]

5. 生成公私钥

$ssh-keygen.exe -t rsa -P ‘’

6. 为版本打标签

$ git tag -a v1.0 “tag info”
$ git tag
$ git show v1.0

7. 将标签推送到服务器

$ git push [远程仓库别名] v1.0

8. 删除标签

$ git tag -d v1.0

9. 查看⼯作区和版本库⾥⾯最新版本的区别

$ git diff HEAD - - [文件名]

10. ⽤命令git reset HEAD file把暂存区的修改撤销掉(unstage),重新放回⼯作区

$git reset HEAD [文件名]

#回退到上⼀个版本

$git reset --hard HEAD^

11. 从版本库中删除文件

$ git rm [文件名]

12. git reflog⽤来记录你的每⼀次命令:

$ git reflog
#HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使⽤命 
$ git reset --hard commit_id
$ git reset --hard commit_id

13. 创建dev分⽀,然后切换到dev分⽀:

$ git checkout -b dev 
#Switched to a new branch 'dev'

⽤git branch命令查看当前分⽀:

$ git branch 
*dev 
master

git branch命令会列出所有分⽀,当前分⽀前⾯会标⼀个*号。 然后,我们就可以在dev分⽀上正常提交,⽐如对readme.txt做个修改,加上⼀⾏: Creating a new branch is quick. 然后提交:

$ git add readme.txt 
$ git commit -m "branch test" 
# dev fec145a branch test 1 file changed, 1 insertion(+) 现在,dev分⽀的⼯作完成,我们就可以切换回master分⽀: 	
$ git checkout master 
# Switched to branch 'master

现在,我们把dev分⽀的⼯作成果合并到master分⽀上

$ git merge dev

⼩结

Git⿎励⼤量使⽤分⽀:
查看分⽀:git branch
创建分⽀:git branch name
切换分⽀:git checkout name
创建+切换分⽀:git checkout -b name
合并某分⽀到当前分⽀:git merge name
删除分⽀:git branch -d name

14. stash,把当前工作分支“储藏”起来,等以后恢复现场后继续⼯作

git stash命令应用例子:

$ git stash :把当前所在的⼯作分支“储藏”起来,假设当前分支:dev

$ git stash save
# 保存工作目录和索引状态 WIP on drone_rotor: beb5e2f 修改语法错误:commit 172453b66e099290e6141e4550


$ git stash save “备注的内容” : 和git stash命令的区别,存储工作区有备注信息

$ git stash save "存储分支drone_rotor"

1.⾸先确定在哪个分⽀上修复优先级高的bug

假定需要在master分⽀上修复,就从master创建临时分⽀:
$ git checkout master
Switched to branch ‘master’
Your branch is ahead of ‘origin/master’ by 6 commits.
$ git checkout -b issue-101
Switched to a new branch ‘issue-101’

2.现在修复bug

需要把“Git is free software …”改为“Git is a free software …”,然后 提交:
$ git add readme.txt
$ git commit -m “fix bug 101”
[issue-101 cc17032] fix bug 101
1 file changed, 1 insertion(+), 1 deletion(-)

3.修复完成后,切换到master分⽀,并完成合并,最后删除issue-101分⽀:

$ git checkout master
Switched to branch ‘master’
Your branch is ahead of ‘origin/master’ by 2 commits.
$ git merge --no-ff -m “merged bug fix 101” issue-101
Merge made by the ‘recursive’ strategy.
readme.txt | 2 ± 1 file changed, 1 insertion(+), 1 deletion(-)
$ git branch -d issue-101
Deleted branch issue-101 (was cc17032).

4.接着回到原dev分⽀

$git checkout dev
Switched to branch ‘dev’
$ git status
#On branch dev nothing to commit (working directory clean)
⼯作区是干净的,刚才的⼯作现场存到哪去了?

5.⽤git stash list命令看看:

$ git stash list
stash@{0}: WIP on dev: 6224937 add merge
stash@{1}: WIP on drone_g209: 34736b3 g209测试版本

6.恢复原⼯作现场

Git把stash内容存在某个地⽅了,但是需要恢复⼀下,有两个办法:
⼀是⽤git stash apply恢复,但是恢复后,stash内容并不删除,你需要⽤git stash drop来删除; 另⼀种⽅式是⽤git stash pop,恢复的同时把stash内容也删了:
$ git stash pop
#On branch dev
#Changes to be committed:
#(use “git reset HEAD …” to unstage)

#new file: hello.py

#Changes not staged for commit:
#(use “git add …” to update what will be committed)
#(use “git checkout – …” to discard changes in working directory) #
#modified: readme.txt
#Dropped refs/stash@{0} (f624f8e5f082f2df2bed8a4e09c12fd2943bdd40)
再⽤git stash list查看,就看不到任何stash内容了:
git stash相关命令:
$ git stash save “备注的内容”
$ git stash list :列出stash的所有记录
stash@{0}: On drone_rotor: drone_rotor add pts to frame id
$ git stash clear:删除stash的所有记录
$ git stash pop:应用最近一次的stash,随后删除该记录
$ git stash apply:应用最近一次的stash
$ git stash drop:删除最近的一次stash
当有多条stash,可以指定操作stash,首先使用stash list列出所有记录:
$ git stash list
stash@{0}: On drone_rotor: drone_rotor add pts to frame id
stash@{1}: On drone_rotor: drone_rotor add pts to frame id
stash@{2}: WIP on drone_rotor: beb5e2f 修改语法错误:commit 172453b66e099290e6141e45505fc3090e5d860f

应用第二条记录:
$ git stash apply [email protected]{1}
pop,drop同理…

git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存储,后面加stash id,比如第二个 git stash show stash@{1},完整的差异可以使用git stash show -p。

15. 统计文件的改动

git diff < local branch > < remote >/< remote branch >
$ git diff --stat master origin/master

16. 创建远程分支:

查看所有远程分支:git branch -rv

创建本地分支同时迁出:git checkout -b + 本地分支名
$ git checkout -b devA

本地分支推送到服务器上并创建远程分支:git push --set-upstream origin + 远程分支名(建议设置的远程分支名与本地分支同名)

17. 搭建git服务器:

一台可以使用 SSH 连接的服务器,搭建 Git 服务将会非常简单。首先我们要确保服务器上运行着 SSH 服务(sshd),大多数 Linux 服务器版本都默认包含了该服务,如果没有,可以先安装 openssh-server。然后在服务器上创建 Git 远程版本库:

aneasystone@little-stone:~$ sudo mkdir -p /git/repo
aneasystone@little-stone:~$ sudo git init --bare /git/repo/test.git
已初始化空的 Git 仓库于 /git/repo/test.git/
我们在 /git/repo 目录通过 git init --bare 命令创建一个裸仓库(bare repository,即一个不包含当前工作目录的仓库),只要这一步,我们就可以开始使用了。接着我们在工作目录 clone 这个版本库:
aneasystone@little-stone:~$ cd ~/working/
aneasystone@little-stone:~/working$ git clone /git/repo/test.git
正克隆到 ‘test’…
warning: 您似乎克隆了一个空仓库。
完成

然后我们可以使用 pull、push 就像操作其他的版本库一样。
aneasystone@little-stone:~/working$ cd test/
aneasystone@little-stone:~/working/test$ touch 1
aneasystone@little-stone:~/working/test$ touch 2
aneasystone@little-stone:~/working/test$ git add .
aneasystone@little-stone:~/working/test$ git commit -m ‘first commit’
[master (根提交) 4983f84] first commit
2 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 1
create mode 100644 2
aneasystone@little-stone:~/working/test$ sudo git push
[sudo] aneasystone 的密码:
对象计数中: 3, 完成.
Delta compression using up to 8 threads.
压缩对象中: 100% (2/2), 完成.
写入对象中: 100% (3/3), 205 bytes | 205.00 KiB/s, 完成.
Total 3 (delta 0), reused 0 (delta 0)
To /git/repo/test.git
*[new branch] master -> master。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ai_Sj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值