git本地仓库搭建(windows,github)

What

*中文翻译感觉比较拗口,直接搬了英文解释

Git: a version control system (VCS) for tracking changes in computer files and coordinating work on those files among multiple people. It is primarily used for source code management in software development, but it can be used to keep track of changes in any set of files.

一分钟介绍Git-youtube video

  • Git GUI: aimed at people who don't like the coding on black screens, it provides a graphical user interface to run the git commands.

  • Git bash: bash is a Unix shell and command language, and is the default shell on Linux and OS X. In laymen terms, the git which runs on the terminal of any Linux device is known as git bash.

  • Git CMD(command line prompt) is the command-line interpreter on Windows operating systems. Sort of an equivalent to the terminal in Linux.

  • GitHub: a web-based Git or version control repository and internet hosting service. It offers all the distributed version control and source code management (SCM) functionality of Git as well as adding its own features.

*总结一下,就是一个通过Git进行版本控制的软件源代码托管服务。号称全球最大男性交友平台(误)

Why

  • 在本地和远程各有一个git仓库用来储存自己的代码,两个仓库可以进行同步
  • GitHub上的仓库可以作为备份,还可以通过该仓库和他人协作

How

  1. 在github中创建一个新的仓库(repository)
image.png
  1. 在本地创建一个文件夹,利用终端Git CMD进入文件夹目录, 执行初始化命令。
    git init
    这一步的目的在于把这个文件夹变成Git可以管理的仓库。
image.png

这一步成功后, Git自动在文件夹里创建一个.git的目录,用于跟踪管理版本库。

image.png
  1. 将本地仓库和远程仓库进行关联
git remote add origin git@github.com:username/repository path.git
image.png
  1. 关联成功以后,还不能推送同步到远程仓库。本地Git和GitHub仓库之间传输是通过SSH加密的,但现在所用的SSH key是public key,不在自己的GitHub账户列表里。所以需要配置SSH key验证信息。
  • 首先使用Git Bash生成SSH Key
$ ssh-keygen -t rsa -C "yourgithubemail@example.com"
  • 使用默认路径,命令会在C:\Users\Administrator中生成.ssh文件夹。使用记事本打开其中的id_rsa.pub,复制内容(ssh key)。
image.png
  • 进入github,Account-》Settings-》SSH and GPG keys,新建SSH key,将复制的key粘贴进去。
image.png
  • 添加完成后,可以使用如下命令检查是否成功。
$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.

Git的简要流程

以下摘自Git教程: http://www.runoob.com/git/git-tutorial.html

  • Workflow
    workflow

    你可以提出更改(把它们添加到暂存区Index)
$ git add [file name]

你可以提交改动到head, 但这一步改动还没有到你的远端仓库
Records file snapshots permanently in version history

$ git commit -m"[descriptive message]”

你可以推送你的改动,从而把改动提交到远端仓库。master可以换成你想要推送的任何分支

$ git push origin master

假如你操作失误,你可以替换掉本地改动

$ git checkout --[filename]

此命令会使用 HEAD 中的最新内容替换掉你的工作目录中的文件。已添加到暂存区的改动以及新文件都不会受到影响。

  • Branch 分支
branch

创建一个名字叫做feature_x的分支,并切换过去

$ git checkout -b feature_x

切换回主分支

$ git checkout master

删掉新建的分支

$ git branch -d feature_x

将分支推送到远程仓库,才能被他人所看到

$ git push origin[branch]

-更新与合并
要更新你的本地仓库至最新改动

$ git pull

在你的工作目录中获取(fetch)并合并(merge)远端的改动

  • 要合并其他分支到你当前的分支(例如master)
$ git merge [branch]
  • 可能会出现冲突,这时候就需要手动修改这些文件来手动合并这些冲突。改完之后,可以将它们标记为合并成功。
$ git add [file name]
  • 在合并改动前,你可以使用如下命令预览差异
$ git diff [source_branch][target_branch]
  • 标签
    创建一个叫做1.0.0的标签
$ git tag 1.0.0 1b2e1d63ff

后面那一串字符是你想要标记的提交ID的前10位字符(也可以使用少几位,只要能确定唯一性),可以使用以下命令获取

$ git log

常用Git命令

Git完整命令手册

  • Configure Tooling 配置工具
  1. set the name you want attached to your commit transaction.
$ git config --global user.name"[name]"
  1. set the email you want attached to your commit transaction
$ git config --global user.email"[email address]"
  1. enable helpful colorization of command line output
$ git config --global color.ui auto
  1. 内置图形化git
$ gitk
  1. 历史记录每个提交信息只显示一行
$ git config format.pretty oneline
  1. 交互式添加文件到暂存区
$ git add -i
  • Creating repositories 创建仓库
  1. 创建一个新的本地仓库
$ git init [project-name]
  1. 创建一个本地仓库的克隆版本
$ git clone /path/to/repository
  1. 创建一个远程服务器仓库的克隆版本
$ git clone username@host:/path/to/repository
  • Making changes 更改替换
  1. Lists all new or modified files to be committed
$ git status
  1. Shows file differences not yet staged
$git diff
  1. Shows file differences between staging and the last file version
$ git diff --staged 

-Group changes 群更改

1. Lists all local branches in the current repository

$ git branch

2. Creates a new branch

$ git branch [branch-name]

3. Switches to the specified branch and updates the working directory

$ git checkout [branch-name]

4. Combines the specified branch’s history into the current branch

$ git merge [branch]

5. Deletes the specified branch

$ git branch -d [branch-name]


-**Refactor filenames**: relocate and remove files

  1. Deletes the file from the working directory and stages the deletion
$ git rm [file] 
  1. Removes the file from version control but preserves the file locally
$ git rm --cached [file] 
  1. Changes the file name and prepares it for commit
$ git mv [file-original] [file-renamed] 

-Superess tracking: exclude temporary files and paths

  1. A text file named .gitignore suppresses accidental versioning of files and paths matching the specified patterns
*.log build/ temp-*

  1. Lists all ignored files in this project
$ git ls-files --other --ignored --exclude-standard 

-Save fragments: Shelve and restore incomplete changes

  1. Temporarily stores all modified tracked files
$ git stash 
  1. Lists all stashed changesets
$ git stash list 
  1. Restores the most recently stashed files
$ git stash pop 
  1. Discards the most recently stashed changeset
$ git stash drop 

-Review history: Browse and inspect the evolution of project files

  1. Lists version history for the current branch
$ git log 
  1. Lists version history for a file, including renames
$ git log --follow [file] 
  1. Shows content differences between two branches
$ git diff [first-branch]...[second-branch] 
  1. Outputs metadata and content changes of the specified commit
$ git show [commit] 

-Redo commits: Erase mistakes and craft replacement history

  1. Undoes all commits after [commit], preserving changes locally
$ git reset [commit] 
  1. Discards all history and changes back to the specified commit
$ git reset --hard [commit] 

-Synchronize changes: Register a repository bookmark and exchange version history

  1. Downloads all history from the repository bookmark
$ git fetch [bookmark] 
  1. Combines bookmark’s branch into current local branch
$ git merge [bookmark]/[branch] 
  1. Uploads all local branch commits to GitHub
$ git push [alias] [branch] 
  1. Downloads bookmark history and incorporate changes
$ git pull
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,056评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,842评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,938评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,296评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,292评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,413评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,824评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,493评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,686评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,502评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,553评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,281评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,820评论 3 305
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,873评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,109评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,699评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,257评论 2 341

推荐阅读更多精彩内容