环境:Ubuntu Server 12.04
- 安装Git
apt-get install git git-core
- 配置本机Git
git config --global user.name "evilxr" git config --global user.email evilxr@gmail.com git config --global color.ui true
-
列出所有配置
tp@Evilxr:/tmp$ git config --list user.name=evilxr user.email=evilxr@gmail.com color.ui=true tp@Evilxr:/tmp$
以上操作实际上修改的是这个文件
tp@Evilxr:/tmp$ cat ~/.gitconfig [user] name = evilxr email = evilxr@gmail.com [color] ui = true
- 生成密钥
ssh-keygen -t rsa -C evilxr@gmail.com
- 提交密钥
vim /root/.ssh/id_rsa.pub
复制里面的密钥,到github网页中登陆自己的账号,然后再account setting中,找到SSH KEY讲复制的密钥加入(需要github密码确认)
- 检验是否链接上了github
ssh git@github.com
PTY allocation request failed on channel 0
Hi evilxr! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.
推荐:Git练兵场
补充:git的版本查询 git --version git的路径查询 which git
- 创建一个repository
# mkdir Python_urllib # git init # vim Python_urllib # coding:utf8 import urllib import chardet def automatic_detect(url): """" doc """ content = urllib.urlopen(url).read() result= chardet.detect(content) encoding = result['encoding'] return encoding url_list = ["http://www.sina.com.cn/", "http://www.cnblogs.com/evilxr", "http://bbs.hackav.com/", "http://www.baidu.com/", "http://fuli.ba/"] for url in url_list: print url, automatic_detect(url)
- git status
tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 初始提交 未跟踪的文件: (使用 "git add <file>..." 以包含要提交的内容) Python_urllib.py 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
- git add
tp@Evilxr:/tmp/Python_urllib$ git add Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 初始提交 要提交的变更: (使用 "git rm --cached <file>..." 撤出暂存区) 新文件: Python_urllib.py
- git commit -m 'something you need say.'
tp@Evilxr:/tmp/Python_urllib$ git commit -m 'Python Scrip' [master (根提交) 7555373] Python Scrip 1 file changed, 20 insertions(+) create mode 100644 Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 无文件要提交,干净的工作区
- git status -s
# 再次修改Python_urllib.py文件,在其最后加上一条语句 # print 'made by evilxr.' # 然后git status -s
tp@Evilxr:/tmp/Python_urllib$ git status -s M Python_urllib.py
- git diff 查看文件差别
tp@Evilxr:/tmp/Python_urllib$ git diff diff --git a/Python_urllib.py b/Python_urllib.py index 806e0fa..b99aadb 100644 --- a/Python_urllib.py +++ b/Python_urllib.py @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/", for url in url_list: print url, automatic_detect(url) +print 'made by evilxr.'
tp@Evilxr:/tmp/Python_urllib$ git diff --staged diff --git a/Python_urllib.py b/Python_urllib.py index 806e0fa..b99aadb 100644 --- a/Python_urllib.py +++ b/Python_urllib.py @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/", for url in url_list: print url, automatic_detect(url) +print 'made by evilxr.'
tp@Evilxr:/tmp/Python_urllib$ git diff HEAD diff --git a/Python_urllib.py b/Python_urllib.py index 806e0fa..b99aadb 100644 --- a/Python_urllib.py +++ b/Python_urllib.py @@ -18,3 +18,4 @@ url_list = ["http://www.sina.com.cn/", for url in url_list: print url, automatic_detect(url) +print 'made by evilxr.'
# 将不同的地方显示为一行,以不同颜色为对比 git diff --color-words
- git reset 撤销操作
tp@Evilxr:/tmp/Python_urllib$ git diff tp@Evilxr:/tmp/Python_urllib$ git status -s M Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git reset Python_urllib.py 重置后撤出暂存区的变更: M Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git status -s M Python_urllib.py tp@Evilxr:/tmp/Python_urllib$
- git checkout
tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 尚未暂存以备提交的变更: (使用 "git add <file>..." 更新要提交的内容) (使用 "git checkout -- <file>..." 丢弃工作区的改动) 修改: Python_urllib.py 修改尚未加入提交(使用 "git add" 和/或 "git commit -a") tp@Evilxr:/tmp/Python_urllib$ git checkout Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 无文件要提交,干净的工作区 tp@Evilxr:/tmp/Python_urllib$
还可以用git checkout HEAD filename从
- git rm filename 撤销
tp@Evilxr:/tmp/Python_urllib$ ls notuse.py Python_urllib.py tp@Evilxr:/tmp/Python_urllib$ git rm notuse.py rm 'notuse.py' tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 要提交的变更: (使用 "git reset HEAD <file>..." 撤出暂存区) 删除: notuse.py tp@Evilxr:/tmp/Python_urllib$ git status -s D notuse.py tp@Evilxr:/tmp/Python_urllib$ git commit -m 'deletd old.py' [master 4e0a415] deletd old.py 1 file changed, 7 deletions(-) delete mode 100644 notuse.py tp@Evilxr:/tmp/Python_urllib$ git status 位于分支 master 无文件要提交,干净的工作区
- git pull
从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update
- git新建分支并切换到该分支
git checkout -b now-function
-
git合并分支,当需要在现有系统上添加一个新功能时,往往另外开一个分支来弄,
比如,如果要将开发中的分支(test),合并到稳定分支(master), 首先切换的master分支:git checkout master 然后执行合并操作:git merge test 如果有冲突,会提示你,调用git status查看冲突文件。 解决冲突,然后调用git add或git rm将解决后的文件暂存。 所有冲突解决后,git commit 提交更改。
- 修改commit最后一次提交内容,加入大段注释
git commit --amend
- git查看某文件修改历史
1.切换到目录 2.git log --pretty=oneline filename #you will see test8b43a808cfe86fc90dde852c4a49e28f4ca6 testa2033c785154f2400b179a15ef090f5a9cb6 test6e8eb956dc41a1db54080a6bca2adc348ed8 testd5e0306088d9bc0217c2ece4ced4e3870db9 test72f220e19bde8eb87be3076a383cea8951d7 test46632b93a86ddde029594e1d1a6f9b82932d test3f15f46105c1e61107068cef987e6838e5e0 testc6d31cfbbf65c53e24571cd67057c66ad6ce test54827582044a3e8b1d6165b5f82fce0d51ac test4fc6ecaa3b519cb0f781ad4fbbe340b26bec test0d09df4653a800a0f4cedbcab1e3d2702000 3.git show test4fc6ecaa3b519cb0f781ad4fbbe340b26bec
-
查看某文件每一行最后修改日期和修改者信息
git blame filename
若非特别声明,文章均为Evilxr的个人笔记,转载请注明出处。