使用Git就记这几个命令

使用Git就记这几个命令

一、安装

1.在Linux上安装Git

如果用Debian或Ubuntu Linux,通过一条sudo apt-get install git就可以完成Git的安装。

老一点的Debian或Ubuntu Linux,要把命令改为sudo apt-get install git-core。

如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了。

2.在Mac OS X上安装Git

一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/
二是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

3.在Windows上安装Git

直接从Git官网直接下载安装程序,然后按默认选项安装即可。

安装完成后,鼠标右击桌面出现Git Bash Here,就说明安装成功。
在这里插入图片描述
安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "用户名"
$ git config --global user.email "邮箱"

注意git config命令的 --global参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
邮箱最好是GitHub上注册的邮箱地址,用户名也最好是。

二、创建版本库

git命令跟Linux命令差不多。
使用mkdir创建一个版本库,首先,选择一个合适的地方,创建一个空目录:

$ mkdir gitRepository
$ cd gitRepository
$ pwd
/Users/michael/gitRepository

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init
Initialized empty Git repository in /Users/michael/gitRepository/.git/

刚创建的是一个空的仓库(empty Git repository),当前目录下会多了一个.git的目录,这个目录是Git用来跟踪管理版本库的,不要手动修改这个目录里面的文件,搞坏了你就得重新再装了。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

第三步,把文件添加到版本库
现在我们编写一个demo.txt文件,内容如下:

Git is a version control system.

要放到gitRepository目录下(子目录也行),
用命令git add告诉Git,把文件添加到仓库:

$ git add demo.txt

用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m " demo file"
[master (root-commit) eaadf4e]  demo file
 1 file changed, 1 insertions(+)
 create mode 100644 demo.txt

git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,最好是要有意义的。
继续修改readme.txt文件,改成如下内容:

Git is a distributed version control system.

运行git status命令看看结果:

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

git status命令可以让我们时刻仓库当前的状态,上面的命令输出告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
使用git diff命令看看具体修改了什么内容:

$ git diff demo.txt
diff --git a/demo.txt b/demo.txt
index 7950452..ee41969 100644
--- a/demo.txt
+++ b/demo.txt
@@ -1 +1 @@
-Git is a version control system.
\ No newline at end of file
+Git is a distributed version control system.
\ No newline at end of file

修改之后重新提交就可以了。
提交后,再用git status命令看看仓库的当前状态:

$ git status
On branch master
nothing to commit, working tree clean

git log命令查看每次提交的内容:
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。

使用git reset命令:

git reset --hard HEAD^

使用git checkout – file丢弃工作区的修改:
命令git checkout – demo.txt意思就是,把demo.txt文件在工作区的修改全部撤销,这里有两种情况:

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

一种是demo.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
使用cat命令查看内容:

$ cat demo.txt
Git is a distributed version control system.

用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区.
rm命令删没用的文件:

$ rm helloword.txt

最后要再使用git commit提交后,确认删除。

$ git commit -m "remove demo.txt"
[master d46f35e] remove demo.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 demo.txt

删错了,还是可以还原的,使用版本回退cheakout

三、远程仓库

1.创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,创建SSH Key:

$ ssh-keygen -t rsa -C "你的邮箱(GitHub邮箱)"

id_rsa是私钥,id_rsa.pub是公钥
在GitHub上添加SSH Key,选择setting→SSH and GPG keys→new SSH key
在这里插入图片描述
然后,填写名字,将id_rsa.pub文件里的内容,粘贴到key中,然后,点击Add SSH key完成添加。

2.创建远程仓库

在这里插入图片描述
选择New repository创建目录
在这里插入图片描述
在本地的gitRepository仓库下运行命令:

$ git remote add origin git@github.com:lqq-qg(GitHub账户名)/demo(GitHub上的目录名).git

添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

$ git push -u origin master

git push命令,实际上是把当前分支master推送到远程。
只要本地作了提交,就可以通过命令git push 将本地仓库同步的GitHub上。

$ git push origin master

第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:

The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
注意
这里可能出现连接不到远程仓库,请检查远程仓库目录名是否正确,本地SSH是否生效。

3.删除远程库

使用git remote rm <name>命令,建议先用git remote -v查看远程库信息:

$ git remote -v
origin  git@github.com:lqq-qg/demo.git (fetch)
origin  git@github.com:lqq-qg/demo-git.git (push)

根据名字删除origin:

$ git remote rm origin

此处的“删除”其实是解除了本地和远程的绑定关系,并不是物理上删除了远程库。远程库本身并没有任何改动。要真正删除远程库,需要登录到GitHub,在后台页面找到删除按钮再删除。

4.从远程仓库克隆

在远程仓库随意创建一个目录,初始化一个README.md文件。
使用命令git clone克隆一个本地库:

$ git clone git@github.com:lqq-qg/hadoop.git
Cloning into 'hadoop'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.

GitHub给出的地址不止一个,还可以用https://github.com/michaelliao/gitskills.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。

四、分子管理

使用git checkout命令加上-b参数表示创建并切换:
使用git branch命令查看当前分支

$ git branch demo
$ git checkout demo
Switched to branch 'demo'

当前分支前面会标一个*号。
使用git merge命令用于合并指定分支到当前分支。

$ git merge dev
Updating d56f34e..b13d22e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

删除demo分支

$ git branch -d demo
Deleted branch demo(was b17d20e).
git switch

最新版本的Git提供了新的git switch命令来切换分支.
创建并切换到新的dev分支:

$ git switch -c dev

切换到已有的master分支

$ git switch master

查看分支:git branch

创建分支:git branch

切换分支:git checkout 或者git switch

创建+切换分支:git checkout -b 或者git switch -c

合并某分支到当前分支:git merge

删除分支:git branch -d


禁用Fast forward模式

使用--no-ff方式的git merge
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。


Bug分支

Git提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

$ git stash

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支。
修复完成后,切换到master分支,并完成合并,最后删除分支。
git stash list命令查看隐藏的工作区。
恢复以往隐藏的工作区,有两种方法。
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了。
然后恢复指定的stash,用命令:git stash apply stash@{0}
Git提供了一个cherry-pick命令,能复制一个特定的提交到当前分支:

$ git cherry-pick 4c8095e4

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。


多人协作:

首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

这就是多人协作的工作模式,一旦熟悉了,就非常简单。


通过git rebase:
特点:rebase操作可以把本地未push的分叉提交历史整理成直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。


使用命令git tag <name>就可以打一个新标签:
用命令git tag查看所有标签:
git show <tagname>查看标签信息:
可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

$ git tag -a v1.0 -m "version 1.0 released" 1096dba

注意:标签是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。


使用命令git push origin <tagname>本地推送到远程:
使用git tag -d v1.0删除错误
一次性推送全部尚未推送到远程的本地标签:

$ git push origin --tags

要删除远程标签,先删除本地标签,再删除远程:

$ git tag -d v1.0
$ git push origin :refs/tags/v1.0

使用git config --global color.ui true设置内容颜色


.gitignore文件

把要忽略的文件名填进去,Git就会自动忽略这些文件。
git check-ignore命令检查,.gitignore文件哪里写得有问题。

$ git check-ignore -v demo.class
.gitignore:3:*.class	demo.class

.gitignore的第3行规则忽略了该文件。
git add -f强制添加被排除的文件。

$ git add -f demo.class

把指定文件排除在.gitignore规则外的写法就是!+文件名。

配置别名

使用git config --global alias.别名 命令配置别名:

$ git config --global alias.ci commit

提交就可以简写成:

$ git ci -m "bieming"

配置git reset HEAD别名命令:

$ git config --global alias.unstage 'reset HEAD'

git unstage file == git reset HEAD file

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值