[github]git必会技能集合(入门与实践)

猫哥

1:配置个人信息

git config --global user.name "name"
git config --global user.email "xx@qq.com"

2:配置显示信息

git config --global color.ui auto    #输出显示信息更易读

3:创建和添加密钥的方法

1:创建密钥
ssh-keygen -t rsa  -b 4096 -C "397916230@qq.com"
然后会要求你输入一个你能记住的密码
产生的三个内容需要注意:
    1:   key fingerprint
    2:  .ssh/id_rsa文件      私有密钥
    3:  .ssh/id_rsa.pub文件  公开密钥

2: add to ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

3:向github中添加公开密钥
在自己的github帐号中添加了公开密钥之后,就可以用私有密钥进行认证了
在浏览器中登录github帐号->setting->SSH and GPG keys->add key 
(title随机取名,key的来源是id_rsa.pub文件中的内容,注意该文件的所有内容到复制到github中)

4:在shell中使用私人密钥与github进行通信
 ssh -T git@github.com 
#这时会弹出一个对话框,让你输入密码,该密码为刚才创建密钥时输入的密码

4:常用小功能

watch: 关注某个项目的开发进展
following:关注某些程序员
follower:有哪些人关注你

5:在命令行中向已经建立好的空repository中添加文件README.md

echo "# firt try to create repository using cmd line" >> README.md
git init
git add README.md  #添加文件到仓库中
git commit -m "firt commit" #提交文件时,添加的commit内容
git remote add origin  https://github.com/huangtao00/First.git
git push -u origin master  #push到上first.git这个仓库中 ,这一步要输入用户名,密码

6:向仓库中添加代码的流程

#还有一个更简单的方法,在浏览器中创建了仓库后,直接到cmd下git clone 之前创建的仓库即可 
#注意在浏览器中clone时一定选择使用Clone with SSH,这样只用输入一次密码,查看第3部分)
git clone git@github.com:huangtao00/CoolQrobot.git

git status  #查看一下当前本地创建的状态 
#编写要添加的程序源码
#下面是添加源码到仓库中
git add hello.py
git commit -m "add hello.py to repository" #后面push到远程repo时,会显示的信息
git log  #可以用来查看 你之前 在什么时间 提交过 commit
git push  #这样就把刚才add and commit的文件和信息上传到了远程仓库

#下次要加入新的文件,或是旧的文件需要改变后 上传时,还是进行如下操作
git add filename
git commit -m "message"
git push 

#如果自己改了很多文件,已经不记得哪些文件自己改过了,可以使用下面命令
#查看修改过,但是还没有被push到远程repo的文件
git status   #主要是用来显示本地创建的当前状态 

#如果当前目录中存在没有被添加到仓库中的文件时,该文件称为untracked files
#通过 git add命令把文件添加到repo中,此时git status可以看到 new file:

#如果git add之后,发现add的文件添加错了,使用下面的命令从stage中去除掉
git rm --cached filename
#然后再 git status时,可以发现文件又变成了 untracked files

#git commit的信息附到之前add的所有文件上
直接输入git commit时,vim会被打开,让你添加更加详细的提交信息

#当你输入git commit使用vim对之前add的文件添加了 提交信息后,后来又觉得这些commit信息写的有问题,可以用下面的命令回到没到commit的状态 
git reset HEAD hello.py

#git log 查看什么人在什么时间进行了commit的操作
git log --pretty=short  #对每个commit,只显示提交信息的第一行,方便观察
git log  README.md  #只显示与该文件有关的commit ,也可加目录 
#记住 git log这个命令非常强大,有很多参数,因为开发人员经常要看一下,以前自己或团队对工程里的源码做过哪些修改,需要慢慢掌握这个工具


#如果我们改变了文件 但是没有add,这时文件改变状态 是在工作树中保存的
#如果我们把改变后的文件git add之后,这时,文件改变的状态 就同步到了暂存区
#再使用git diff 就看不到区别了

#这里有一点要注意的,文件在本地时,有两个空间 工作树空间,暂存区空间,
#工作树空间-->add -->暂存区空间--->push -->远程仓库

git diff HEAD,可以查看最近的一次文件做了哪些修改 ,就是在commit前,可以用这个命令来看,文件所做的修改,如果项目很大时,这个命令很有用的!!

#实际上我们操作时,可以把所有文件慢慢的add,commit了之后,
#然后通常 git log来看所有commit,
#最后需要上传到远程repo时,才调用push,不要一个文件发生改变后,马上push,没有必要
#文件改没改变,可以通常git status发现,然后git diff查看具体改变了什么

#删除远程仓库上文件的命令
git rm -f  file
git commit -m "delete file"
git push

#删除暂存区空间上的文件
git rm --cached file

7:包含其它子repo的目录添加失败

git rm -r --cached some-directory
git commit -m "Remove the now ignored directory some-directory"
git push -u origin master

8:git免密提交

#不使用密钥,只是将密码cache到memory
# Set git to use the credential memory cache ,默认15分钟后失效
git config --global credential.helper cache
# Set the cache to timeout after 1 hour (setting is in seconds)单位是秒
git config --global credential.helper 'cache --timeout=3600'

9:代码追溯

git checkout <tag>
git log    #to get sha number used below
git reset --hard  <sha>
阅读 1.7k

cherishsir
do some research about memory system

热衷于研究各类互联网技术,热爱学习,热爱生活!

297 声望
28 粉丝
0 条评论

热衷于研究各类互联网技术,热爱学习,热爱生活!

297 声望
28 粉丝
宣传栏