Git 常用命令学习

学习了网上一些Git的资料,总结一下:

  1. GIT和SVN命令的对比:
    ‘git clone’ == ‘svn checkout’
    ‘git checkout’ == ‘svn switch’
    ‘git push’ == ‘svn commit’

  2. git add readme.txt’ 是把readme.txt从workspace放到staging区。
    git commit -m “some information”’ 是把readme.txt从staging区放到repository。
    注意这里都还是在本机上的操作。要传到远程服务器上需要用push。

  3. git status’ 的运行结果举例

如果修改了readme.txt,但还没有执行’git add readme.txt’,运行’git status’结果为:

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#    modified:   readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

上面显示了"modified", 则表明readme.txt文件有改动。同时上面还显示"no changes added to commit",表明该文件还没有出现在staging区。

执行了’git add readme.txt’操作后,再运行’git status’,结果如下:

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   readme.txt
#

还是会显示"modified",但是那行"no changes added to commit"没有了,因为修改后的文件已经放在staging area,有东西要commit到repository了。

  1. git diff HEAD – readme.txt
    会显示workspace和repository之间的readme.txt之间的差异。如果还没有执行’git commit readme.txt’, 那么不管有没有执行’git add readme.txt’,上面的’git diff HEAD – readme.txt’都会显示workspace和repository之间的差异,该差异跟是否执行’git add readme.txt’无关。

如果已经执行了’git commit readme.txt’,则上面的diff会显示没有区别。因为workspace和repository的内容已经一样了。
这时候再运行’git status’,会显示

# On branch master
nothing to commit (working directory clean) 
  1. git checkout – readme.txt
    会让readme.txt放弃在workspace的修改,也就是回到最近一次提交’git commit readme.txt’或’git add readme.txt’的状态。
    如果readme.txt修改后还没有被放到staging区(也就是还没有执行git add),那么’git checkout – readme.txt’ 会让readme.txt回到repository里面的状态,也就是上次’git commit’的状体。
    如果readme.txt修改后已经被放到staging区(也就是已经执行了git add,但还没有git commit),那么’git checkout – readme.txt’会让readme.txt回到tia
    一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到刚刚添加到暂存区后的状态(也就是刚刚git add时的状态。

'git checkout .‘ 会抛弃当前的folder和子folder的变化。

  1. git reset HEAD readme.txt
    是放弃staging区里面的readme.txt的修改,让其回到’git add readme.txt’之前的状态。

  2. ‘git clone’ 和 ‘git pull’ 的区别:
    ‘git clone’ 是把整个远程的repository下载下来,包括里面的log, branch。所以下载下来之后本地也可以直接切换branch。
    ‘git pull’相当于’git fetch’和’git merge’。也就是先远程下载git项目里面文件,再与本地的branch进行合并。

  3. 如何修改commit注释?
    git commit --amend

  4. 如何合并最近的3个commit?
    假定最近的4个commit如下:

  • b1b8189 - (HEAD -> master) Commit-3
  • 5756e15 - Commit-2
  • e7ba81d - Commit-1
  • 5d39ff2 - Commit-0

run ‘git rebase -i 5d39ff2
or
run ‘git rebase -i HEAD~3

一个Notepad++文件会出现,前面3行如下
pick e7ba81d Commit-1
pick 5756e15 Commit-2
pick b1b8189 Commit-3

将其改为:
pick e7ba81d Commit-1
squash 5756e15 Commit-2
squash b1b8189 Commit-3

pick e7ba81d Commit-1
s 5756e15 Commit-2
s b1b8189 Commit-3

保存文件并推出。又会弹出一个notepad++文件,开头部分显示如下:

# This is a combination of 3 commits.
# The first commit's message is:
Commit-1   注释1

# This is the 2nd commit message:

Commit-2   注释2

# This is the 3rd commit message:

Commit-3   注释3

将其改为:

Commit-1   注释1

存盘并推出即可。

  1. 如何config git global email?
    git config --global user.email “aaaaa@bbb.com”

如何config git global name?
git config --global user.name “your_name”

如何reset author?
git commit --amend --reset-author

如何显示git global user email?
git config --global user.email

如何显示git global user name?
git config --global user.name

  1. 如何将服务器上master branch的某个文件下载下来替代本机上对应的项目文件,然后再push到自己的repo?

git checkout origin/master my_folder/my_file.c
git add my_foler/my_file.c
git commit -m “revert my_foler/my_file.c to master”
git push

还有好多,下次再写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值